package leetcode101.tree;

/**
 * @author Synhard
 * @version 1.0
 * @class Code13
 * @description 226. 翻转二叉树
 * 翻转一棵二叉树。
 *
 * 示例：
 *
 * 输入：
 *
 *      4
 *    /   \
 *   2     7
 *  / \   / \
 * 1   3 6   9
 * 输出：
 *
 *      4
 *    /   \
 *   7     2
 *  / \   / \
 * 9   6 3   1
 *
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-06-25 7:20
 */
public class Code13 {

    public static void main(String[] args) {

    }

    public static TreeNode invertTree(TreeNode root) {
        if (root == null || (root.left == null && root.right == null)) {
            return root;
        }
//        如下写法是错误的，因为root.left在执行了第一句时已经改变了，再执行第二个语句时改变的就不是原来的root.left了
//        root.left = invertTree(root.right);
//        root.right = invertTree(root.left);
        TreeNode left = invertTree(root.left);
        TreeNode right = invertTree(root.right);
        root.right = left;
        root.left = right;
        return root;
    }

}
